package org.example.Service;

import org.example.Entity.Product;

import java.util.List;

/**
 * 产品服务接口，定义了对产品信息进行增删改查操作的方法。
 */
public interface ProductService {

    /**
     * 添加新产品。
     *
     * @param product 要添加的产品对象。
     */
    void addProduct(Product product);

    /**
     * 获取所有产品的列表。
     *
     * @return 包含所有产品的列表。
     */
    List<Product> getAllProducts();

    /**
     * 根据产品ID获取特定产品。
     *
     * @param id 产品ID。
     * @return 匹配给定ID的产品对象，如果不存在则返回null。
     */
    Product getProductById(String id);

    /**
     * 根据产品名称获取特定产品。
     *
     * @param name 产品名称。
     * @return 匹配给定名称的产品对象，如果不存在则返回null。
     */
    Product getProductByName(String name);

    /**
     * 根据价格范围获取产品列表。
     *
     * @param minPrice 最小价格。
     * @param maxPrice 最大价格。
     * @return 符合价格范围的产品列表。
     */
    List<Product> getProductsByPriceRange(double minPrice, double maxPrice);

    /**
     * 根据产品ID删除特定产品。
     *
     * @param id 要删除的产品ID。
     */
    void deleteProductById(String id);

    /**
     * 更新产品名称。
     *
     * @param id      要更新的产品ID。
     * @param newName 新的产品名称。
     */
    void updateProductName(String id, String newName);

    /**
     * 更新产品价格。
     *
     * @param id       要更新的产品ID。
     * @param newPrice 新的产品价格。
     */
    void updateProductPrice(String id, double newPrice);

    /**
     * 更新产品库存数量。
     *
     * @param id              要更新的产品ID。
     * @param newStockQuantity 新的库存数量。
     */
    void updateProductStockQuantity(String id, int newStockQuantity);
}
